home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1986-12-15 | 2.9 KB | 52 lines |
- 10 CLEAR:VER$="*** MENU.BAS v2.06 --by Steven Linhart-- revised We 3-Apr-1984 ***"
- 20 KEY 1,"LIST ":KEY 2,"FILES ":KEY 3,"LOAD"+CHR$(34):KEY 4,"SAVE"+CHR$(34):KEY 5,"GOSUB ":KEY 6,"RETURN":KEY 7,")":KEY 8,"CHR$(":KEY 9,"IF ":KEY 10,"RENUM " ' Function key customization
- 30 SCREEN 0,1,0,0:COLOR 7,0,0:KEY OFF:WIDTH 80
- 40 ON ERROR GOTO 440:DEF SEG=64:POKE 23,PEEK(23)OR 64:POKE 23,PEEK(23)AND 223:IF STICK(0)THEN JYSTK=-1:GOSUB 390:STRIG ON ELSE JYSTK=0 'error trap, caps and numlock state, check for joystick.
- 50 CLS:PRINT "This program displays all BASIC files on the selected disk."
- 60 PRINT "One program will be in reverse video. Press return to chain to it."
- 70 PRINT "Position the selected program with the cursor control keys or the joystick."
- 80 PRINT "Press Esc to end, X to exit to DOS, R to recalibrate the joystick, \ to change"
- 90 PRINT "directories, or a drive letter [A-M] to choose that drive."
- 100 LOCATE 7,1:FILES DRV$+"*.BAS"
- 110 Y=8:X=0
- 120 F$="":GOSUB 430:COLOR 0,7:FOR L=1 TO 12:LOCATE Y,X+L,0:C$=CHR$(SCREEN(Y,X+L)):PRINT C$:F$=F$+C$:NEXT:COLOR 7,0'- Highlight program at Y,X
- 130 K$=INKEY$:IF LEN(K$)=0 THEN IF JYSTK THEN 310 ELSE 130
- 140 IF LEN(K$)=2 THEN 230 'Extended character
- 150 IF ASC(K$)=13 THEN 290 'Enter
- 160 IF K$>="A" AND K$<="M" OR K$>="a" AND K$<="m" THEN DRV$=K$+":":GOTO 50
- 170 IF K$="\" OR K$="|" THEN GOSUB 430:GOTO 380
- 180 IF K$="X" OR K$="x" THEN CLS:SYSTEM
- 190 IF K$="R" OR K$="r" THEN GOSUB 430:IF JYSTK THEN GOSUB 410:GOSUB 390
- 200 IF K$="V" OR K$="v" THEN GOSUB 430:LOCATE ,(80-LEN(VER$))\2:COLOR 15:PRINT VER$;:COLOR 7
- 210 IF ASC(K$)=27 THEN ON ERROR GOTO 0:CLS:KEY ON:END 'Esc
- 220 GOTO 130
- 230 R$=RIGHT$(K$,1):A=ASC(R$)
- 240 IF A=72 AND Y>8 THEN GOSUB 300:Y=Y-1:GOTO 120 'Up
- 250 IF A=80 AND Y<23 THEN GOSUB 300:Y=Y+1:GOTO 120 'Down
- 260 IF A=75 AND X>17 THEN GOSUB 300:X=X-18:GOTO 120 'Left
- 270 IF A=77 AND X<54 THEN GOSUB 300:X=X+18:GOTO 120 'Right
- 280 GOTO 130
- 290 IF RIGHT$(F$,4)<>".BAS" THEN GOSUB 430:LOCATE ,1:COLOR 15:PRINT "Not a file!";:COLOR 7:GOSUB 420:GOTO 130 ELSE CLS:RUN DRV$+F$ '- Chain to file
- 300 FOR L=1 TO 12:LOCATE Y,X+L:PRINT CHR$(SCREEN(Y,X+L)):NEXT:RETURN '- Remove highlight
- 310 JX=STICK(0):JY=STICK(1) '- Check joystick inputs
- 320 IF JY<JUP AND Y>8 THEN GOSUB 300:Y=Y-1:GOTO 120 'Up
- 330 IF JY>JDOWN AND Y<23 THEN GOSUB 300:Y=Y+1:GOTO 120 'Down
- 340 IF JX<JLEFT AND X>17 THEN GOSUB 300:X=X-18:GOTO 120 'Left
- 350 IF JX>JRIGHT AND X<54 THEN GOSUB 300:X=X+18:GOTO 120 'Right
- 360 L=STRIG(1) OR STRIG(3):IF L THEN 290 'Button
- 370 GOTO 130
- 380 GOSUB 430:LOCATE ,1:INPUT;"Directory";DIR$:IF DIR$<>"" THEN CHDIR DRV$+DIR$:GOTO 50 ELSE GOSUB 430:GOTO 130 '- Change directory
- 390 JX=STICK(0):JLEFT=JX-JX\2:JRIGHT=JX+JX\2:JY=STICK(1):JUP=JY-JY\2:JDOWN=JY+JY\2:JYSTK=-1:RETURN '- Calibrate joystick
- 400 FOR L=200 TO 100 STEP-15:SOUND(L*5+50),0.1:NEXT:RETURN '- Sound BubbleDown
- 410 FOR L=100 TO 200 STEP 15:SOUND(L*5+50),0.1:NEXT:RETURN '- Sound BubbleUp
- 420 SOUND 800,1:SOUND 650,1:RETURN '- Sound Boop
- 430 LOCATE 25,1:PRINT SPC(79);:RETURN '- Clear error msgs
- 440 IF ERL<>100 AND ERL<>380 THEN 500 '- Error Trapping
- 450 GOSUB 430:GOSUB 400:COLOR 15
- 460 IF ERR=53 THEN LOCATE 24,1:PRINT "No .BAS files in directory.";:COLOR 7:RESUME 110
- 470 IF ERR=76 THEN LOCATE 25,45:PRINT "Path not found. Try again.";:COLOR 7:RESUME 380
- 480 IF ERR=64 THEN LOCATE 25,45:PRINT "Bad name. Try again.";:COLOR 7:RESUME 380
- 490 IF ERR=71 THEN PRINT "Disk not ready. Correct and press any key.";:GOTO 510
- 500 PRINT "Please report to Steven Linhart that error #"ERR"occured in line"ERL".";
- 510 COLOR 7:M$=INPUT$(1):GOSUB 430:RESUME 20
-